/*!
 * VERSION: 1.17.0
 * DATE: 2015-05-27
 * UPDATES AND DOCS AT: http://greensock.com
 *
 * @license Copyright (c) 2008-2015, GreenSock. All rights reserved.
 * This work is subject to the terms at http://greensock.com/standard-license or for
 * Club GreenSock members, the software agreement that was issued with your membership.
 * 
 * @author: Jack Doyle, jack@greensock.com
 */
(function(t, e) {
    "use strict";
    var i = t.GreenSockGlobals = t.GreenSockGlobals || t;
    if (!i.TweenLite) {
        var s, n, r, a, o, l = function(t) {
            var e, s = t.split("."), n = i;
            for (e = 0; s.length > e; e++)
                n[s[e]] = n = n[s[e]] || {};
            return n
        }, h = l("com.greensock"), _ = 1e-10, u = function(t) {
            var e, i = [], s = t.length;
            for (e = 0; e !== s; i.push(t[e++]))
                ;
            return i
        }, m = function() {}, f = function() {
            var t = Object.prototype.toString
              , e = t.call([]);
            return function(i) {
                return null != i && (i instanceof Array || "object" == typeof i && !!i.push && t.call(i) === e)
            }
        }(), c = {}, p = function(s, n, r, a) {
            this.sc = c[s] ? c[s].sc : [],
            c[s] = this,
            this.gsClass = null,
            this.func = r;
            var o = [];
            this.check = function(h) {
                for (var _, u, m, f, d = n.length, v = d; --d > -1; )
                    (_ = c[n[d]] || new p(n[d],[])).gsClass ? (o[d] = _.gsClass,
                    v--) : h && _.sc.push(this);
                if (0 === v && r)
                    for (u = ("com.greensock." + s).split("."),
                    m = u.pop(),
                    f = l(u.join("."))[m] = this.gsClass = r.apply(r, o),
                    a && (i[m] = f,
                    "function" == typeof define && define.amd ? define((t.GreenSockAMDPath ? t.GreenSockAMDPath + "/" : "") + s.split(".").pop(), [], function() {
                        return f
                    }) : s === e && "undefined" != typeof module && module.exports && (module.exports = f)),
                    d = 0; this.sc.length > d; d++)
                        this.sc[d].check()
            }
            ,
            this.check(!0)
        }, d = t._gsDefine = function(t, e, i, s) {
            return new p(t,e,i,s)
        }
        , v = h._class = function(t, e, i) {
            return e = e || function() {}
            ,
            d(t, [], function() {
                return e
            }, i),
            e
        }
        ;
        d.globals = i;
        var g = [0, 0, 1, 1]
          , T = []
          , y = v("easing.Ease", function(t, e, i, s) {
            this._func = t,
            this._type = i || 0,
            this._power = s || 0,
            this._params = e ? g.concat(e) : g
        }, !0)
          , w = y.map = {}
          , P = y.register = function(t, e, i, s) {
            for (var n, r, a, o, l = e.split(","), _ = l.length, u = (i || "easeIn,easeOut,easeInOut").split(","); --_ > -1; )
                for (r = l[_],
                n = s ? v("easing." + r, null, !0) : h.easing[r] || {},
                a = u.length; --a > -1; )
                    o = u[a],
                    w[r + "." + o] = w[o + r] = n[o] = t.getRatio ? t : t[o] || new t
        }
        ;
        for (r = y.prototype,
        r._calcEnd = !1,
        r.getRatio = function(t) {
            if (this._func)
                return this._params[0] = t,
                this._func.apply(null, this._params);
            var e = this._type
              , i = this._power
              , s = 1 === e ? 1 - t : 2 === e ? t : .5 > t ? 2 * t : 2 * (1 - t);
            return 1 === i ? s *= s : 2 === i ? s *= s * s : 3 === i ? s *= s * s * s : 4 === i && (s *= s * s * s * s),
            1 === e ? 1 - s : 2 === e ? s : .5 > t ? s / 2 : 1 - s / 2
        }
        ,
        s = ["Linear", "Quad", "Cubic", "Quart", "Quint,Strong"],
        n = s.length; --n > -1; )
            r = s[n] + ",Power" + n,
            P(new y(null,null,1,n), r, "easeOut", !0),
            P(new y(null,null,2,n), r, "easeIn" + (0 === n ? ",easeNone" : "")),
            P(new y(null,null,3,n), r, "easeInOut");
        w.linear = h.easing.Linear.easeIn,
        w.swing = h.easing.Quad.easeInOut;
        var b = v("events.EventDispatcher", function(t) {
            this._listeners = {},
            this._eventTarget = t || this
        });
        r = b.prototype,
        r.addEventListener = function(t, e, i, s, n) {
            n = n || 0;
            var r, l, h = this._listeners[t], _ = 0;
            for (null == h && (this._listeners[t] = h = []),
            l = h.length; --l > -1; )
                r = h[l],
                r.c === e && r.s === i ? h.splice(l, 1) : 0 === _ && n > r.pr && (_ = l + 1);
            h.splice(_, 0, {
                c: e,
                s: i,
                up: s,
                pr: n
            }),
            this !== a || o || a.wake()
        }
        ,
        r.removeEventListener = function(t, e) {
            var i, s = this._listeners[t];
            if (s)
                for (i = s.length; --i > -1; )
                    if (s[i].c === e)
                        return s.splice(i, 1),
                        void 0
        }
        ,
        r.dispatchEvent = function(t) {
            var e, i, s, n = this._listeners[t];
            if (n)
                for (e = n.length,
                i = this._eventTarget; --e > -1; )
                    s = n[e],
                    s && (s.up ? s.c.call(s.s || i, {
                        type: t,
                        target: i
                    }) : s.c.call(s.s || i))
        }
        ;
        var k = t.requestAnimationFrame
          , A = t.cancelAnimationFrame
          , S = Date.now || function() {
            return (new Date).getTime()
        }
          , x = S();
        for (s = ["ms", "moz", "webkit", "o"],
        n = s.length; --n > -1 && !k; )
            k = t[s[n] + "RequestAnimationFrame"],
            A = t[s[n] + "CancelAnimationFrame"] || t[s[n] + "CancelRequestAnimationFrame"];
        v("Ticker", function(t, e) {
            var i, s, n, r, l, h = this, u = S(), f = e !== !1 && k, c = 500, p = 33, d = "tick", v = function(t) {
                var e, a, o = S() - x;
                o > c && (u += o - p),
                x += o,
                h.time = (x - u) / 1e3,
                e = h.time - l,
                (!i || e > 0 || t === !0) && (h.frame++,
                l += e + (e >= r ? .004 : r - e),
                a = !0),
                t !== !0 && (n = s(v)),
                a && h.dispatchEvent(d)
            };
            b.call(h),
            h.time = h.frame = 0,
            h.tick = function() {
                v(!0)
            }
            ,
            h.lagSmoothing = function(t, e) {
                c = t || 1 / _,
                p = Math.min(e, c, 0)
            }
            ,
            h.sleep = function() {
                null != n && (f && A ? A(n) : clearTimeout(n),
                s = m,
                n = null,
                h === a && (o = !1))
            }
            ,
            h.wake = function() {
                null !== n ? h.sleep() : h.frame > 10 && (x = S() - c + 5),
                s = 0 === i ? m : f && k ? k : function(t) {
                    return setTimeout(t, 0 | 1e3 * (l - h.time) + 1)
                }
                ,
                h === a && (o = !0),
                v(2)
            }
            ,
            h.fps = function(t) {
                return arguments.length ? (i = t,
                r = 1 / (i || 60),
                l = this.time + r,
                h.wake(),
                void 0) : i
            }
            ,
            h.useRAF = function(t) {
                return arguments.length ? (h.sleep(),
                f = t,
                h.fps(i),
                void 0) : f
            }
            ,
            h.fps(t),
            setTimeout(function() {
                f && 5 > h.frame && h.useRAF(!1)
            }, 1500)
        }),
        r = h.Ticker.prototype = new h.events.EventDispatcher,
        r.constructor = h.Ticker;
        var R = v("core.Animation", function(t, e) {
            if (this.vars = e = e || {},
            this._duration = this._totalDuration = t || 0,
            this._delay = Number(e.delay) || 0,
            this._timeScale = 1,
            this._active = e.immediateRender === !0,
            this.data = e.data,
            this._reversed = e.reversed === !0,
            B) {
                o || a.wake();
                var i = this.vars.useFrames ? q : B;
                i.add(this, i._time),
                this.vars.paused && this.paused(!0)
            }
        });
        a = R.ticker = new h.Ticker,
        r = R.prototype,
        r._dirty = r._gc = r._initted = r._paused = !1,
        r._totalTime = r._time = 0,
        r._rawPrevTime = -1,
        r._next = r._last = r._onUpdate = r._timeline = r.timeline = null,
        r._paused = !1;
        var C = function() {
            o && S() - x > 2e3 && a.wake(),
            setTimeout(C, 2e3)
        };
        C(),
        r.play = function(t, e) {
            return null != t && this.seek(t, e),
            this.reversed(!1).paused(!1)
        }
        ,
        r.pause = function(t, e) {
            return null != t && this.seek(t, e),
            this.paused(!0)
        }
        ,
        r.resume = function(t, e) {
            return null != t && this.seek(t, e),
            this.paused(!1)
        }
        ,
        r.seek = function(t, e) {
            return this.totalTime(Number(t), e !== !1)
        }
        ,
        r.restart = function(t, e) {
            return this.reversed(!1).paused(!1).totalTime(t ? -this._delay : 0, e !== !1, !0)
        }
        ,
        r.reverse = function(t, e) {
            return null != t && this.seek(t || this.totalDuration(), e),
            this.reversed(!0).paused(!1)
        }
        ,
        r.render = function() {}
        ,
        r.invalidate = function() {
            return this._time = this._totalTime = 0,
            this._initted = this._gc = !1,
            this._rawPrevTime = -1,
            (this._gc || !this.timeline) && this._enabled(!0),
            this
        }
        ,
        r.isActive = function() {
            var t, e = this._timeline, i = this._startTime;
            return !e || !this._gc && !this._paused && e.isActive() && (t = e.rawTime()) >= i && i + this.totalDuration() / this._timeScale > t
        }
        ,
        r._enabled = function(t, e) {
            return o || a.wake(),
            this._gc = !t,
            this._active = this.isActive(),
            e !== !0 && (t && !this.timeline ? this._timeline.add(this, this._startTime - this._delay) : !t && this.timeline && this._timeline._remove(this, !0)),
            !1
        }
        ,
        r._kill = function() {
            return this._enabled(!1, !1)
        }
        ,
        r.kill = function(t, e) {
            return this._kill(t, e),
            this
        }
        ,
        r._uncache = function(t) {
            for (var e = t ? this : this.timeline; e; )
                e._dirty = !0,
                e = e.timeline;
            return this
        }
        ,
        r._swapSelfInParams = function(t) {
            for (var e = t.length, i = t.concat(); --e > -1; )
                "{self}" === t[e] && (i[e] = this);
            return i
        }
        ,
        r._callback = function(t) {
            var e = this.vars;
            e[t].apply(e[t + "Scope"] || e.callbackScope || this, e[t + "Params"] || T)
        }
        ,
        r.eventCallback = function(t, e, i, s) {
            if ("on" === (t || "").substr(0, 2)) {
                var n = this.vars;
                if (1 === arguments.length)
                    return n[t];
                null == e ? delete n[t] : (n[t] = e,
                n[t + "Params"] = f(i) && -1 !== i.join("").indexOf("{self}") ? this._swapSelfInParams(i) : i,
                n[t + "Scope"] = s),
                "onUpdate" === t && (this._onUpdate = e)
            }
            return this
        }
        ,
        r.delay = function(t) {
            return arguments.length ? (this._timeline.smoothChildTiming && this.startTime(this._startTime + t - this._delay),
            this._delay = t,
            this) : this._delay
        }
        ,
        r.duration = function(t) {
            return arguments.length ? (this._duration = this._totalDuration = t,
            this._uncache(!0),
            this._timeline.smoothChildTiming && this._time > 0 && this._time < this._duration && 0 !== t && this.totalTime(this._totalTime * (t / this._duration), !0),
            this) : (this._dirty = !1,
            this._duration)
        }
        ,
        r.totalDuration = function(t) {
            return this._dirty = !1,
            arguments.length ? this.duration(t) : this._totalDuration
        }
        ,
        r.time = function(t, e) {
            return arguments.length ? (this._dirty && this.totalDuration(),
            this.totalTime(t > this._duration ? this._duration : t, e)) : this._time
        }
        ,
        r.totalTime = function(t, e, i) {
            if (o || a.wake(),
            !arguments.length)
                return this._totalTime;
            if (this._timeline) {
                if (0 > t && !i && (t += this.totalDuration()),
                this._timeline.smoothChildTiming) {
                    this._dirty && this.totalDuration();
                    var s = this._totalDuration
                      , n = this._timeline;
                    if (t > s && !i && (t = s),
                    this._startTime = (this._paused ? this._pauseTime : n._time) - (this._reversed ? s - t : t) / this._timeScale,
                    n._dirty || this._uncache(!1),
                    n._timeline)
                        for (; n._timeline; )
                            n._timeline._time !== (n._startTime + n._totalTime) / n._timeScale && n.totalTime(n._totalTime, !0),
                            n = n._timeline
                }
                this._gc && this._enabled(!0, !1),
                (this._totalTime !== t || 0 === this._duration) && (this.render(t, e, !1),
                z.length && $())
            }
            return this
        }
        ,
        r.progress = r.totalProgress = function(t, e) {
            return arguments.length ? this.totalTime(this.duration() * t, e) : this._time / this.duration()
        }
        ,
        r.startTime = function(t) {
            return arguments.length ? (t !== this._startTime && (this._startTime = t,
            this.timeline && this.timeline._sortChildren && this.timeline.add(this, t - this._delay)),
            this) : this._startTime
        }
        ,
        r.endTime = function(t) {
            return this._startTime + (0 != t ? this.totalDuration() : this.duration()) / this._timeScale
        }
        ,
        r.timeScale = function(t) {
            if (!arguments.length)
                return this._timeScale;
            if (t = t || _,
            this._timeline && this._timeline.smoothChildTiming) {
                var e = this._pauseTime
                  , i = e || 0 === e ? e : this._timeline.totalTime();
                this._startTime = i - (i - this._startTime) * this._timeScale / t
            }
            return this._timeScale = t,
            this._uncache(!1)
        }
        ,
        r.reversed = function(t) {
            return arguments.length ? (t != this._reversed && (this._reversed = t,
            this.totalTime(this._timeline && !this._timeline.smoothChildTiming ? this.totalDuration() - this._totalTime : this._totalTime, !0)),
            this) : this._reversed
        }
        ,
        r.paused = function(t) {
            if (!arguments.length)
                return this._paused;
            var e, i, s = this._timeline;
            return t != this._paused && s && (o || t || a.wake(),
            e = s.rawTime(),
            i = e - this._pauseTime,
            !t && s.smoothChildTiming && (this._startTime += i,
            this._uncache(!1)),
            this._pauseTime = t ? e : null,
            this._paused = t,
            this._active = this.isActive(),
            !t && 0 !== i && this._initted && this.duration() && this.render(s.smoothChildTiming ? this._totalTime : (e - this._startTime) / this._timeScale, !0, !0)),
            this._gc && !t && this._enabled(!0, !1),
            this
        }
        ;
        var D = v("core.SimpleTimeline", function(t) {
            R.call(this, 0, t),
            this.autoRemoveChildren = this.smoothChildTiming = !0
        });
        r = D.prototype = new R,
        r.constructor = D,
        r.kill()._gc = !1,
        r._first = r._last = r._recent = null,
        r._sortChildren = !1,
        r.add = r.insert = function(t, e) {
            var i, s;
            if (t._startTime = Number(e || 0) + t._delay,
            t._paused && this !== t._timeline && (t._pauseTime = t._startTime + (this.rawTime() - t._startTime) / t._timeScale),
            t.timeline && t.timeline._remove(t, !0),
            t.timeline = t._timeline = this,
            t._gc && t._enabled(!0, !0),
            i = this._last,
            this._sortChildren)
                for (s = t._startTime; i && i._startTime > s; )
                    i = i._prev;
            return i ? (t._next = i._next,
            i._next = t) : (t._next = this._first,
            this._first = t),
            t._next ? t._next._prev = t : this._last = t,
            t._prev = i,
            this._recent = t,
            this._timeline && this._uncache(!0),
            this
        }
        ,
        r._remove = function(t, e) {
            return t.timeline === this && (e || t._enabled(!1, !0),
            t._prev ? t._prev._next = t._next : this._first === t && (this._first = t._next),
            t._next ? t._next._prev = t._prev : this._last === t && (this._last = t._prev),
            t._next = t._prev = t.timeline = null,
            t === this._recent && (this._recent = this._last),
            this._timeline && this._uncache(!0)),
            this
        }
        ,
        r.render = function(t, e, i) {
            var s, n = this._first;
            for (this._totalTime = this._time = this._rawPrevTime = t; n; )
                s = n._next,
                (n._active || t >= n._startTime && !n._paused) && (n._reversed ? n.render((n._dirty ? n.totalDuration() : n._totalDuration) - (t - n._startTime) * n._timeScale, e, i) : n.render((t - n._startTime) * n._timeScale, e, i)),
                n = s
        }
        ,
        r.rawTime = function() {
            return o || a.wake(),
            this._totalTime
        }
        ;
        var I = v("TweenLite", function(e, i, s) {
            if (R.call(this, i, s),
            this.render = I.prototype.render,
            null == e)
                throw "Cannot tween a null target.";
            this.target = e = "string" != typeof e ? e : I.selector(e) || e;
            var n, r, a, o = e.jquery || e.length && e !== t && e[0] && (e[0] === t || e[0].nodeType && e[0].style && !e.nodeType), l = this.vars.overwrite;
            if (this._overwrite = l = null == l ? Q[I.defaultOverwrite] : "number" == typeof l ? l >> 0 : Q[l],
            (o || e instanceof Array || e.push && f(e)) && "number" != typeof e[0])
                for (this._targets = a = u(e),
                this._propLookup = [],
                this._siblings = [],
                n = 0; a.length > n; n++)
                    r = a[n],
                    r ? "string" != typeof r ? r.length && r !== t && r[0] && (r[0] === t || r[0].nodeType && r[0].style && !r.nodeType) ? (a.splice(n--, 1),
                    this._targets = a = a.concat(u(r))) : (this._siblings[n] = K(r, this, !1),
                    1 === l && this._siblings[n].length > 1 && J(r, this, null, 1, this._siblings[n])) : (r = a[n--] = I.selector(r),
                    "string" == typeof r && a.splice(n + 1, 1)) : a.splice(n--, 1);
            else
                this._propLookup = {},
                this._siblings = K(e, this, !1),
                1 === l && this._siblings.length > 1 && J(e, this, null, 1, this._siblings);
            (this.vars.immediateRender || 0 === i && 0 === this._delay && this.vars.immediateRender !== !1) && (this._time = -_,
            this.render(-this._delay))
        }, !0)
          , E = function(e) {
            return e && e.length && e !== t && e[0] && (e[0] === t || e[0].nodeType && e[0].style && !e.nodeType)
        }
          , O = function(t, e) {
            var i, s = {};
            for (i in t)
                G[i] || i in e && "transform" !== i && "x" !== i && "y" !== i && "width" !== i && "height" !== i && "className" !== i && "border" !== i || !(!F[i] || F[i] && F[i]._autoCSS) || (s[i] = t[i],
                delete t[i]);
            t.css = s
        };
        r = I.prototype = new R,
        r.constructor = I,
        r.kill()._gc = !1,
        r.ratio = 0,
        r._firstPT = r._targets = r._overwrittenProps = r._startAt = null,
        r._notifyPluginsOfEnabled = r._lazy = !1,
        I.version = "1.17.0",
        I.defaultEase = r._ease = new y(null,null,1,1),
        I.defaultOverwrite = "auto",
        I.ticker = a,
        I.autoSleep = 120,
        I.lagSmoothing = function(t, e) {
            a.lagSmoothing(t, e)
        }
        ,
        I.selector = t.$ || t.jQuery || function(e) {
            var i = t.$ || t.jQuery;
            return i ? (I.selector = i,
            i(e)) : "undefined" == typeof document ? e : document.querySelectorAll ? document.querySelectorAll(e) : document.getElementById("#" === e.charAt(0) ? e.substr(1) : e)
        }
        ;
        var z = []
          , N = {}
          , L = I._internals = {
            isArray: f,
            isSelector: E,
            lazyTweens: z
        }
          , F = I._plugins = {}
          , U = L.tweenLookup = {}
          , j = 0
          , G = L.reservedProps = {
            ease: 1,
            delay: 1,
            overwrite: 1,
            onComplete: 1,
            onCompleteParams: 1,
            onCompleteScope: 1,
            useFrames: 1,
            runBackwards: 1,
            startAt: 1,
            onUpdate: 1,
            onUpdateParams: 1,
            onUpdateScope: 1,
            onStart: 1,
            onStartParams: 1,
            onStartScope: 1,
            onReverseComplete: 1,
            onReverseCompleteParams: 1,
            onReverseCompleteScope: 1,
            onRepeat: 1,
            onRepeatParams: 1,
            onRepeatScope: 1,
            easeParams: 1,
            yoyo: 1,
            immediateRender: 1,
            repeat: 1,
            repeatDelay: 1,
            data: 1,
            paused: 1,
            reversed: 1,
            autoCSS: 1,
            lazy: 1,
            onOverwrite: 1,
            callbackScope: 1
        }
          , Q = {
            none: 0,
            all: 1,
            auto: 2,
            concurrent: 3,
            allOnStart: 4,
            preexisting: 5,
            "true": 1,
            "false": 0
        }
          , q = R._rootFramesTimeline = new D
          , B = R._rootTimeline = new D
          , M = 30
          , $ = L.lazyRender = function() {
            var t, e = z.length;
            for (N = {}; --e > -1; )
                t = z[e],
                t && t._lazy !== !1 && (t.render(t._lazy[0], t._lazy[1], !0),
                t._lazy = !1);
            z.length = 0
        }
        ;
        B._startTime = a.time,
        q._startTime = a.frame,
        B._active = q._active = !0,
        setTimeout($, 1),
        R._updateRoot = I.render = function() {
            var t, e, i;
            if (z.length && $(),
            B.render((a.time - B._startTime) * B._timeScale, !1, !1),
            q.render((a.frame - q._startTime) * q._timeScale, !1, !1),
            z.length && $(),
            a.frame >= M) {
                M = a.frame + (parseInt(I.autoSleep, 10) || 120);
                for (i in U) {
                    for (e = U[i].tweens,
                    t = e.length; --t > -1; )
                        e[t]._gc && e.splice(t, 1);
                    0 === e.length && delete U[i]
                }
                if (i = B._first,
                (!i || i._paused) && I.autoSleep && !q._first && 1 === a._listeners.tick.length) {
                    for (; i && i._paused; )
                        i = i._next;
                    i || a.sleep()
                }
            }
        }
        ,
        a.addEventListener("tick", R._updateRoot);
        var K = function(t, e, i) {
            var s, n, r = t._gsTweenID;
            if (U[r || (t._gsTweenID = r = "t" + j++)] || (U[r] = {
                target: t,
                tweens: []
            }),
            e && (s = U[r].tweens,
            s[n = s.length] = e,
            i))
                for (; --n > -1; )
                    s[n] === e && s.splice(n, 1);
            return U[r].tweens
        }
          , H = function(t, e, i, s) {
            var n, r, a = t.vars.onOverwrite;
            return a && (n = a(t, e, i, s)),
            a = I.onOverwrite,
            a && (r = a(t, e, i, s)),
            n !== !1 && r !== !1
        }
          , J = function(t, e, i, s, n) {
            var r, a, o, l;
            if (1 === s || s >= 4) {
                for (l = n.length,
                r = 0; l > r; r++)
                    if ((o = n[r]) !== e)
                        o._gc || o._kill(null, t, e) && (a = !0);
                    else if (5 === s)
                        break;
                return a
            }
            var h, u = e._startTime + _, m = [], f = 0, c = 0 === e._duration;
            for (r = n.length; --r > -1; )
                (o = n[r]) === e || o._gc || o._paused || (o._timeline !== e._timeline ? (h = h || V(e, 0, c),
                0 === V(o, h, c) && (m[f++] = o)) : u >= o._startTime && o._startTime + o.totalDuration() / o._timeScale > u && ((c || !o._initted) && 2e-10 >= u - o._startTime || (m[f++] = o)));
            for (r = f; --r > -1; )
                if (o = m[r],
                2 === s && o._kill(i, t, e) && (a = !0),
                2 !== s || !o._firstPT && o._initted) {
                    if (2 !== s && !H(o, e))
                        continue;
                    o._enabled(!1, !1) && (a = !0)
                }
            return a
        }
          , V = function(t, e, i) {
            for (var s = t._timeline, n = s._timeScale, r = t._startTime; s._timeline; ) {
                if (r += s._startTime,
                n *= s._timeScale,
                s._paused)
                    return -100;
                s = s._timeline
            }
            return r /= n,
            r > e ? r - e : i && r === e || !t._initted && 2 * _ > r - e ? _ : (r += t.totalDuration() / t._timeScale / n) > e + _ ? 0 : r - e - _
        };
        r._init = function() {
            var t, e, i, s, n, r = this.vars, a = this._overwrittenProps, o = this._duration, l = !!r.immediateRender, h = r.ease;
            if (r.startAt) {
                this._startAt && (this._startAt.render(-1, !0),
                this._startAt.kill()),
                n = {};
                for (s in r.startAt)
                    n[s] = r.startAt[s];
                if (n.overwrite = !1,
                n.immediateRender = !0,
                n.lazy = l && r.lazy !== !1,
                n.startAt = n.delay = null,
                this._startAt = I.to(this.target, 0, n),
                l)
                    if (this._time > 0)
                        this._startAt = null;
                    else if (0 !== o)
                        return
            } else if (r.runBackwards && 0 !== o)
                if (this._startAt)
                    this._startAt.render(-1, !0),
                    this._startAt.kill(),
                    this._startAt = null;
                else {
                    0 !== this._time && (l = !1),
                    i = {};
                    for (s in r)
                        G[s] && "autoCSS" !== s || (i[s] = r[s]);
                    if (i.overwrite = 0,
                    i.data = "isFromStart",
                    i.lazy = l && r.lazy !== !1,
                    i.immediateRender = l,
                    this._startAt = I.to(this.target, 0, i),
                    l) {
                        if (0 === this._time)
                            return
                    } else
                        this._startAt._init(),
                        this._startAt._enabled(!1),
                        this.vars.immediateRender && (this._startAt = null)
                }
            if (this._ease = h = h ? h instanceof y ? h : "function" == typeof h ? new y(h,r.easeParams) : w[h] || I.defaultEase : I.defaultEase,
            r.easeParams instanceof Array && h.config && (this._ease = h.config.apply(h, r.easeParams)),
            this._easeType = this._ease._type,
            this._easePower = this._ease._power,
            this._firstPT = null,
            this._targets)
                for (t = this._targets.length; --t > -1; )
                    this._initProps(this._targets[t], this._propLookup[t] = {}, this._siblings[t], a ? a[t] : null) && (e = !0);
            else
                e = this._initProps(this.target, this._propLookup, this._siblings, a);
            if (e && I._onPluginEvent("_onInitAllProps", this),
            a && (this._firstPT || "function" != typeof this.target && this._enabled(!1, !1)),
            r.runBackwards)
                for (i = this._firstPT; i; )
                    i.s += i.c,
                    i.c = -i.c,
                    i = i._next;
            this._onUpdate = r.onUpdate,
            this._initted = !0
        }
        ,
        r._initProps = function(e, i, s, n) {
            var r, a, o, l, h, _;
            if (null == e)
                return !1;
            N[e._gsTweenID] && $(),
            this.vars.css || e.style && e !== t && e.nodeType && F.css && this.vars.autoCSS !== !1 && O(this.vars, e);
            for (r in this.vars) {
                if (_ = this.vars[r],
                G[r])
                    _ && (_ instanceof Array || _.push && f(_)) && -1 !== _.join("").indexOf("{self}") && (this.vars[r] = _ = this._swapSelfInParams(_, this));
                else if (F[r] && (l = new F[r])._onInitTween(e, this.vars[r], this)) {
                    for (this._firstPT = h = {
                        _next: this._firstPT,
                        t: l,
                        p: "setRatio",
                        s: 0,
                        c: 1,
                        f: !0,
                        n: r,
                        pg: !0,
                        pr: l._priority
                    },
                    a = l._overwriteProps.length; --a > -1; )
                        i[l._overwriteProps[a]] = this._firstPT;
                    (l._priority || l._onInitAllProps) && (o = !0),
                    (l._onDisable || l._onEnable) && (this._notifyPluginsOfEnabled = !0)
                } else
                    this._firstPT = i[r] = h = {
                        _next: this._firstPT,
                        t: e,
                        p: r,
                        f: "function" == typeof e[r],
                        n: r,
                        pg: !1,
                        pr: 0
                    },
                    h.s = h.f ? e[r.indexOf("set") || "function" != typeof e["get" + r.substr(3)] ? r : "get" + r.substr(3)]() : parseFloat(e[r]),
                    h.c = "string" == typeof _ && "=" === _.charAt(1) ? parseInt(_.charAt(0) + "1", 10) * Number(_.substr(2)) : Number(_) - h.s || 0;
                h && h._next && (h._next._prev = h)
            }
            return n && this._kill(n, e) ? this._initProps(e, i, s, n) : this._overwrite > 1 && this._firstPT && s.length > 1 && J(e, this, i, this._overwrite, s) ? (this._kill(i, e),
            this._initProps(e, i, s, n)) : (this._firstPT && (this.vars.lazy !== !1 && this._duration || this.vars.lazy && !this._duration) && (N[e._gsTweenID] = !0),
            o)
        }
        ,
        r.render = function(t, e, i) {
            var s, n, r, a, o = this._time, l = this._duration, h = this._rawPrevTime;
            if (t >= l)
                this._totalTime = this._time = l,
                this.ratio = this._ease._calcEnd ? this._ease.getRatio(1) : 1,
                this._reversed || (s = !0,
                n = "onComplete",
                i = i || this._timeline.autoRemoveChildren),
                0 === l && (this._initted || !this.vars.lazy || i) && (this._startTime === this._timeline._duration && (t = 0),
                (0 === t || 0 > h || h === _ && "isPause" !== this.data) && h !== t && (i = !0,
                h > _ && (n = "onReverseComplete")),
                this._rawPrevTime = a = !e || t || h === t ? t : _);
            else if (1e-7 > t)
                this._totalTime = this._time = 0,
                this.ratio = this._ease._calcEnd ? this._ease.getRatio(0) : 0,
                (0 !== o || 0 === l && h > 0) && (n = "onReverseComplete",
                s = this._reversed),
                0 > t && (this._active = !1,
                0 === l && (this._initted || !this.vars.lazy || i) && (h >= 0 && (h !== _ || "isPause" !== this.data) && (i = !0),
                this._rawPrevTime = a = !e || t || h === t ? t : _)),
                this._initted || (i = !0);
            else if (this._totalTime = this._time = t,
            this._easeType) {
                var u = t / l
                  , m = this._easeType
                  , f = this._easePower;
                (1 === m || 3 === m && u >= .5) && (u = 1 - u),
                3 === m && (u *= 2),
                1 === f ? u *= u : 2 === f ? u *= u * u : 3 === f ? u *= u * u * u : 4 === f && (u *= u * u * u * u),
                this.ratio = 1 === m ? 1 - u : 2 === m ? u : .5 > t / l ? u / 2 : 1 - u / 2
            } else
                this.ratio = this._ease.getRatio(t / l);
            if (this._time !== o || i) {
                if (!this._initted) {
                    if (this._init(),
                    !this._initted || this._gc)
                        return;
                    if (!i && this._firstPT && (this.vars.lazy !== !1 && this._duration || this.vars.lazy && !this._duration))
                        return this._time = this._totalTime = o,
                        this._rawPrevTime = h,
                        z.push(this),
                        this._lazy = [t, e],
                        void 0;
                    this._time && !s ? this.ratio = this._ease.getRatio(this._time / l) : s && this._ease._calcEnd && (this.ratio = this._ease.getRatio(0 === this._time ? 0 : 1))
                }
                for (this._lazy !== !1 && (this._lazy = !1),
                this._active || !this._paused && this._time !== o && t >= 0 && (this._active = !0),
                0 === o && (this._startAt && (t >= 0 ? this._startAt.render(t, e, i) : n || (n = "_dummyGS")),
                this.vars.onStart && (0 !== this._time || 0 === l) && (e || this._callback("onStart"))),
                r = this._firstPT; r; )
                    r.f ? r.t[r.p](r.c * this.ratio + r.s) : r.t[r.p] = r.c * this.ratio + r.s,
                    r = r._next;
                this._onUpdate && (0 > t && this._startAt && t !== -1e-4 && this._startAt.render(t, e, i),
                e || (this._time !== o || s) && this._callback("onUpdate")),
                n && (!this._gc || i) && (0 > t && this._startAt && !this._onUpdate && t !== -1e-4 && this._startAt.render(t, e, i),
                s && (this._timeline.autoRemoveChildren && this._enabled(!1, !1),
                this._active = !1),
                !e && this.vars[n] && this._callback(n),
                0 === l && this._rawPrevTime === _ && a !== _ && (this._rawPrevTime = 0))
            }
        }
        ,
        r._kill = function(t, e, i) {
            if ("all" === t && (t = null),
            null == t && (null == e || e === this.target))
                return this._lazy = !1,
                this._enabled(!1, !1);
            e = "string" != typeof e ? e || this._targets || this.target : I.selector(e) || e;
            var s, n, r, a, o, l, h, _, u, m = i && this._time && i._startTime === this._startTime && this._timeline === i._timeline;
            if ((f(e) || E(e)) && "number" != typeof e[0])
                for (s = e.length; --s > -1; )
                    this._kill(t, e[s], i) && (l = !0);
            else {
                if (this._targets) {
                    for (s = this._targets.length; --s > -1; )
                        if (e === this._targets[s]) {
                            o = this._propLookup[s] || {},
                            this._overwrittenProps = this._overwrittenProps || [],
                            n = this._overwrittenProps[s] = t ? this._overwrittenProps[s] || {} : "all";
                            break
                        }
                } else {
                    if (e !== this.target)
                        return !1;
                    o = this._propLookup,
                    n = this._overwrittenProps = t ? this._overwrittenProps || {} : "all"
                }
                if (o) {
                    if (h = t || o,
                    _ = t !== n && "all" !== n && t !== o && ("object" != typeof t || !t._tempKill),
                    i && (I.onOverwrite || this.vars.onOverwrite)) {
                        for (r in h)
                            o[r] && (u || (u = []),
                            u.push(r));
                        if ((u || !t) && !H(this, i, e, u))
                            return !1
                    }
                    for (r in h)
                        (a = o[r]) && (m && (a.f ? a.t[a.p](a.s) : a.t[a.p] = a.s,
                        l = !0),
                        a.pg && a.t._kill(h) && (l = !0),
                        a.pg && 0 !== a.t._overwriteProps.length || (a._prev ? a._prev._next = a._next : a === this._firstPT && (this._firstPT = a._next),
                        a._next && (a._next._prev = a._prev),
                        a._next = a._prev = null),
                        delete o[r]),
                        _ && (n[r] = 1);
                    !this._firstPT && this._initted && this._enabled(!1, !1)
                }
            }
            return l
        }
        ,
        r.invalidate = function() {
            return this._notifyPluginsOfEnabled && I._onPluginEvent("_onDisable", this),
            this._firstPT = this._overwrittenProps = this._startAt = this._onUpdate = null,
            this._notifyPluginsOfEnabled = this._active = this._lazy = !1,
            this._propLookup = this._targets ? {} : [],
            R.prototype.invalidate.call(this),
            this.vars.immediateRender && (this._time = -_,
            this.render(-this._delay)),
            this
        }
        ,
        r._enabled = function(t, e) {
            if (o || a.wake(),
            t && this._gc) {
                var i, s = this._targets;
                if (s)
                    for (i = s.length; --i > -1; )
                        this._siblings[i] = K(s[i], this, !0);
                else
                    this._siblings = K(this.target, this, !0)
            }
            return R.prototype._enabled.call(this, t, e),
            this._notifyPluginsOfEnabled && this._firstPT ? I._onPluginEvent(t ? "_onEnable" : "_onDisable", this) : !1
        }
        ,
        I.to = function(t, e, i) {
            return new I(t,e,i)
        }
        ,
        I.from = function(t, e, i) {
            return i.runBackwards = !0,
            i.immediateRender = 0 != i.immediateRender,
            new I(t,e,i)
        }
        ,
        I.fromTo = function(t, e, i, s) {
            return s.startAt = i,
            s.immediateRender = 0 != s.immediateRender && 0 != i.immediateRender,
            new I(t,e,s)
        }
        ,
        I.delayedCall = function(t, e, i, s, n) {
            return new I(e,0,{
                delay: t,
                onComplete: e,
                onCompleteParams: i,
                callbackScope: s,
                onReverseComplete: e,
                onReverseCompleteParams: i,
                immediateRender: !1,
                lazy: !1,
                useFrames: n,
                overwrite: 0
            })
        }
        ,
        I.set = function(t, e) {
            return new I(t,0,e)
        }
        ,
        I.getTweensOf = function(t, e) {
            if (null == t)
                return [];
            t = "string" != typeof t ? t : I.selector(t) || t;
            var i, s, n, r;
            if ((f(t) || E(t)) && "number" != typeof t[0]) {
                for (i = t.length,
                s = []; --i > -1; )
                    s = s.concat(I.getTweensOf(t[i], e));
                for (i = s.length; --i > -1; )
                    for (r = s[i],
                    n = i; --n > -1; )
                        r === s[n] && s.splice(i, 1)
            } else
                for (s = K(t).concat(),
                i = s.length; --i > -1; )
                    (s[i]._gc || e && !s[i].isActive()) && s.splice(i, 1);
            return s
        }
        ,
        I.killTweensOf = I.killDelayedCallsTo = function(t, e, i) {
            "object" == typeof e && (i = e,
            e = !1);
            for (var s = I.getTweensOf(t, e), n = s.length; --n > -1; )
                s[n]._kill(i, t)
        }
        ;
        var W = v("plugins.TweenPlugin", function(t, e) {
            this._overwriteProps = (t || "").split(","),
            this._propName = this._overwriteProps[0],
            this._priority = e || 0,
            this._super = W.prototype
        }, !0);
        if (r = W.prototype,
        W.version = "1.10.1",
        W.API = 2,
        r._firstPT = null,
        r._addTween = function(t, e, i, s, n, r) {
            var a, o;
            return null != s && (a = "number" == typeof s || "=" !== s.charAt(1) ? Number(s) - Number(i) : parseInt(s.charAt(0) + "1", 10) * Number(s.substr(2))) ? (this._firstPT = o = {
                _next: this._firstPT,
                t: t,
                p: e,
                s: i,
                c: a,
                f: "function" == typeof t[e],
                n: n || e,
                r: r
            },
            o._next && (o._next._prev = o),
            o) : void 0
        }
        ,
        r.setRatio = function(t) {
            for (var e, i = this._firstPT, s = 1e-6; i; )
                e = i.c * t + i.s,
                i.r ? e = Math.round(e) : s > e && e > -s && (e = 0),
                i.f ? i.t[i.p](e) : i.t[i.p] = e,
                i = i._next
        }
        ,
        r._kill = function(t) {
            var e, i = this._overwriteProps, s = this._firstPT;
            if (null != t[this._propName])
                this._overwriteProps = [];
            else
                for (e = i.length; --e > -1; )
                    null != t[i[e]] && i.splice(e, 1);
            for (; s; )
                null != t[s.n] && (s._next && (s._next._prev = s._prev),
                s._prev ? (s._prev._next = s._next,
                s._prev = null) : this._firstPT === s && (this._firstPT = s._next)),
                s = s._next;
            return !1
        }
        ,
        r._roundProps = function(t, e) {
            for (var i = this._firstPT; i; )
                (t[this._propName] || null != i.n && t[i.n.split(this._propName + "_").join("")]) && (i.r = e),
                i = i._next
        }
        ,
        I._onPluginEvent = function(t, e) {
            var i, s, n, r, a, o = e._firstPT;
            if ("_onInitAllProps" === t) {
                for (; o; ) {
                    for (a = o._next,
                    s = n; s && s.pr > o.pr; )
                        s = s._next;
                    (o._prev = s ? s._prev : r) ? o._prev._next = o : n = o,
                    (o._next = s) ? s._prev = o : r = o,
                    o = a
                }
                o = e._firstPT = n
            }
            for (; o; )
                o.pg && "function" == typeof o.t[t] && o.t[t]() && (i = !0),
                o = o._next;
            return i
        }
        ,
        W.activate = function(t) {
            for (var e = t.length; --e > -1; )
                t[e].API === W.API && (F[(new t[e])._propName] = t[e]);
            return !0
        }
        ,
        d.plugin = function(t) {
            if (!(t && t.propName && t.init && t.API))
                throw "illegal plugin definition.";
            var e, i = t.propName, s = t.priority || 0, n = t.overwriteProps, r = {
                init: "_onInitTween",
                set: "setRatio",
                kill: "_kill",
                round: "_roundProps",
                initAll: "_onInitAllProps"
            }, a = v("plugins." + i.charAt(0).toUpperCase() + i.substr(1) + "Plugin", function() {
                W.call(this, i, s),
                this._overwriteProps = n || []
            }, t.global === !0), o = a.prototype = new W(i);
            o.constructor = a,
            a.API = t.API;
            for (e in r)
                "function" == typeof t[e] && (o[r[e]] = t[e]);
            return a.version = t.version,
            W.activate([a]),
            a
        }
        ,
        s = t._gsQueue) {
            for (n = 0; s.length > n; n++)
                s[n]();
            for (r in c)
                c[r].func || t.console.log("GSAP encountered missing dependency: com.greensock." + r)
        }
        o = !1
    }
}
)("undefined" != typeof module && module.exports && "undefined" != typeof global ? global : this || window, "TweenLite");
